/*
 * arquivo.h
 *
 *  Created on: Jul 4, 2011
 *      Author: tualibano
 */

#ifndef ARQUIVO_H_
#define ARQUIVO_H_

typedef struct {
    char nome[64];
    char sha1[60];
    int tamanho;
    int ciclos;
    int resto;
} arquivo;

typedef struct {
    arquivo arquivo;
    int socket;
    int pedaco;
} paramT;

typedef struct {
    char idbusca[32];
    Vizinho quemtemarquivo;
    char sha1[60];
    int tamanho;
    int pedacos;
    int resto;
} respostabusca;

respostabusca *tabelabusca;

arquivo *tabelaarquivo;

// buscar se tem o arquivo localmente
// e responde via udp. feito (falta funcao ip)
extern int buscalocal(char *);

// cria tabela de arquivos
//lista arquivos locais e guarda em uma tabela feito
extern int listararquivos(arquivo **);

//feito; aloca o bloco da tabela feito
extern int criartabelabusca(respostabusca**);

// feito; insere o respostabusca* na tabela passada no primeiro
// argumento. feito
extern int inserirtabelabusca(respostabusca**, respostabusca*);

// fazer a partir do buscartabela
extern int removertabelabusca(respostabusca**, respostabusca*);

// não concluido
extern int printtabelabusca();

//fazer a partir do printtabela
extern respostabusca *buscartabelabusca(respostabusca**, char *);

extern int zerarbusca(respostabusca**);

//
extern void *cp(void *);

extern int enviararquivo(int, char*);

extern int sha1(char *, char *);

extern int baixa(int);

extern int resto(int, char*);
#endif /* ARQUIVO_H_ */
